01 - ggplot2 theme
El objetivo de los temas es ayudar a dar un toque “IMPACT” a los gráficos, no crearlos. El gráfico ya debería estar creado, es decir, con el tipo de gráfico, las estéticas correctas, el etiquetado, etc.
El siguiente ejemplo tiene como objetivo graficar los porcentajes de hogares por categoría de fuentes de agua, según el género del jefe de hogar (Este es un conjunto de datos ficticio).
Gráfico de barras sin formateo
data_to_plot <- presentresults::presentresults_MSNA2024_labelled_results_table |>
dplyr::filter(
analysis_var == "wash_drinking_water_source_cat",
group_var == "hoh_gender",
group_var_value %in% c("male", "female")
) |>
dplyr::mutate(label_analysis_var_value = factor(label_analysis_var_value,
levels = c("Improved",
"Unimproved",
"Surface water",
"Undefined")))
initialplot <- data_to_plot %>%
ggplot2::ggplot() +
ggplot2::geom_col(
ggplot2::aes(
x = label_analysis_var_value,
y = stat,
fill = label_group_var_value
),
position = "dodge"
) +
ggplot2::labs(
title = stringr::str_wrap(unique(data_to_plot$indicator), 50),
x = stringr::str_wrap(unique(data_to_plot$label_analysis_var), 50),
fill = stringr::str_wrap(unique(data_to_plot$label_group_var), 20)
)initialplottheme_barplot
El theme_barplot aplicará la paleta de colores de REACH al gráfico de barras y ajustará el eje y de 0 a 100%.
initialplot +
theme_barplot()theme_barplottheme_impact
El theme_impact cambiará el fondo y el color del título.
initialplot +
theme_barplot() +
theme_impact("reach")theme_barplot and theme_impactOtras paletas
initialplot +
theme_barplot(palette = impact_palettes$impact_palette) +
theme_impact("impact")theme_barplot and theme_impact set with IMPACT themeAlgunas paletas están disponibles en el objeto impact_palettes.
impact_palettes$reach_palette
[1] "#58585A" "#EE5859" "#D2CBB8" "#c7c8ca"
$impact_palette
[1] "#000000" "#315975" "#58585A"
$agora_palette
[1] "#581522" "#023C40" "#4F9C35" "#F56741" "#F6ECD0"
$tol_palette
[1] "#322288" "#505050" "#44AA99" "#88CCEE" "#DDCC77" "#EE5859" "#AA4499"
[8] "#721621"
$high_contrast_tol_palette
[1] "#275587" "#CEA936" "#A35464"
$wong_palette
[1] "#EE5859" "#E69F00" "#56B4E9" "#322288" "#F0E442" "#0072B2" "#505050"
[8] "#CC79A7"
$divergent
[1] "#F15B22" "#F58120" "#FBAB35" "#209EA0" "#008083" "#0072B2" "#016060"
$divergent_with_neutral
[1] "#721621" "#D7191C" "#FDAE61" "#FFFFBF" "#97D3C3" "#209EA0" "#016060"
Errores y número de colores
La paleta debe tener suficientes colores para coincidir con la escala de relleno. La paleta de impacto solo tiene 3 colores, mientras que el gráfico necesita 4.
data_to_plot <- presentresults::presentresults_MSNA2024_labelled_results_table |>
dplyr::filter(
analysis_var == "snfi_fds_cannot_cat",
group_var == "hoh_gender")
initialplot <- data_to_plot %>%
ggplot2::ggplot() +
ggplot2::geom_col(
ggplot2::aes(
x = label_analysis_var_value,
y = stat,
fill = label_group_var_value
),
position = "dodge"
) +
ggplot2::labs(
title = stringr::str_wrap(unique(data_to_plot$indicator), 50),
x = stringr::str_wrap(unique(data_to_plot$label_analysis_var), 50),
fill = stringr::str_wrap(unique(data_to_plot$label_group_var), 20)
)
initialplot +
theme_barplot(palette = impact_palettes$impact_palette) +
theme_impact("impact")Error in `palette()`:
! Insufficient values in manual scale. 4 needed but only 3 provided.
Si necesita más colores, consulte grDevices::colorRampPalette.
function_couleur <- grDevices::colorRampPalette(impact_palettes$divergent_with_neutral)
function_couleur(20) [1] "#721621" "#91161F" "#B1171D" "#D1181C" "#E1402E" "#ED6F43" "#F99E59"
[8] "#FDBF74" "#FED892" "#FEF2B0" "#EEF8BF" "#CDEAC0" "#ACDCC2" "#8ACDBF"
[15] "#64BCB4" "#3FABA9" "#1E9A9C" "#148788" "#0A7374" "#016060"
Esta sección proviene de esta viñeta.